import { Math, Cartographic, Cartesian3 } from 'cesium'

// 经纬度转弧度
const degreesToRadians = value => {
  return Math.toRadians(value)
}

// 弧度转经纬度
const radiansToDegrees = value => {
  return Math.toDegrees(value)
}

// Cartesian3转WGS84 世界坐标转经纬度坐标
const carToWgs84 = cartesian3 => {
  //第一步:笛卡尔空间直角坐标系转为地理坐标（弧度制）
  const cartographic = Cartographic.fromCartesian(cartesian3)
  //第二步:地理坐标（弧度制）转化为经纬度坐标
  const lng = Math.toDegrees(cartographic.longitude)
  const lat = Math.toDegrees(cartographic.latitude)
  const height = cartographic.height
  return [lng, lat, height]
}

// WGS84转Cartesian3 经纬度坐标转世界坐标
const wgs84ToCar = (lon, lat, height) => {
  // 格式：[113.21, 25.61, 100.0]，高度默认为0，可以不写
  const cartesian3 = Cartesian3.fromDegrees(lon, lat, height)
  return cartesian3
}

// WGS84转Cartesian3 经纬度坐标转世界坐标 数组
const wgs84ToCarArr = coordinates => {
  // 格式：[113.21, 25.61, 113.54, 25.24]，不带高度格式的数组
  const cartesian3s = Cartesian3.fromDegreesArray(coordinates)
  return cartesian3s
}

// WGS84转Cartesian3 经纬度坐标转世界坐标 数组带高度
const wgs84ToCarArrH = coordinates => {
  // 格式：[113.21, 25.61, 100.0, 113.54, 25.24, 200.0]，带高度格式的数组
  const cartesian3 = Cartesian3.fromDegreesArrayHeights(coordinates)
  return cartesian3
}

export {
  degreesToRadians,
  radiansToDegrees,
  carToWgs84,
  wgs84ToCar,
  wgs84ToCarArr,
  wgs84ToCarArrH
}
